package com.rickpan.controller;

import com.rickpan.dto.common.ApiResponse;
import com.rickpan.entity.User;
import com.rickpan.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 初始化控制器 - 仅用于开发测试
 */
@RestController
@RequestMapping("/api/init")
public class InitController {

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private PasswordEncoder passwordEncoder;

    /**
     * 初始化管理员用户
     */
    @PostMapping("/admin")
    public ApiResponse<String> initAdmin() {
        // 检查是否已存在管理员
        if (userRepository.findByUsername("admin").isPresent()) {
            return ApiResponse.error("管理员用户已存在");
        }

        // 创建管理员用户
        User admin = new User();
        admin.setUsername("admin");
        admin.setEmail("admin@rickpan.com");
        admin.setPassword(passwordEncoder.encode("123456")); // 正确加密密码
        admin.setRealName("管理员");
        admin.setRole(User.Role.ADMIN);
        admin.setStatus(User.Status.ACTIVE);

        userRepository.save(admin);

        return ApiResponse.success("管理员用户创建成功，用户名: admin, 密码: 123456");
    }

    /**
     * 重置管理员密码
     */
    @PostMapping("/reset-admin")
    public ApiResponse<String> resetAdmin() {
        User admin = userRepository.findByUsername("admin").orElse(null);
        if (admin == null) {
            return ApiResponse.error("管理员用户不存在");
        }

        // 重置密码
        admin.setPassword(passwordEncoder.encode("123456"));
        userRepository.save(admin);

        return ApiResponse.success("管理员密码重置成功，密码: 123456");
    }
}
